package model.map;

import java.util.*;

import model.entity.Entity;

/**
 * This class defines the MapVisitor interface for various map
 * visiting functions.
 * @author Zachary
 *
 */
public abstract class MapVisitor {
	private static Map<Entity, MapPoint> shrouded = new HashMap<Entity, MapPoint>();
	
	/**
	 * Visit the game map.
	 * @param gameMap
	 */
	public abstract void visit(GameMap gameMap); 
	
	/**
	 * Add an entity to the shrouded map.
	 * @param e
	 */
	public static void addToShrouded(Entity e){
		shrouded.put(e, e.getLocation());
	}
	
	/**
	 * Add an entity to the shrouded map with the given position.
	 * @param e
	 * @param p
	 */
	public static void addToShrouded(Entity e, MapPoint p){
		shrouded.put(e, p);
	}
	
	/**
	 * Get the map of shrouded entities.
	 * @return
	 */
	public static Map<Entity, MapPoint> getCurrentlyShroudedEntities(){
		return shrouded;
	}
}
